經過前面幾天網路的簡短介紹,我們終於可以來看防火牆的設計
防火牆是一層裝在內部網路與外部網路的一個安全機制
就跟公司職員要跟主管見面必須得經過主管秘書的篩選一樣,外部的資訊進來會經由防火牆篩選過後,才可進入內部網路
不同安全層級的防火牆有不同方式的篩選機制
主要的分類有三種:
今天先來介紹封包篩選
還記得我們的資料到了接收端會向洋蔥一樣一層一層地由實體層往上剝開
封包篩選機制是根據該組封包的網路層協定資訊進行資料開選
由於只需解析質網路層,其優點是相當有效率,不過缺點是他是無狀態的防護,因此無法理解主機伺服器之間的對話到哪裡,也無法讀取傳輸層和應用層的資訊,容易遭到病毒攻擊
封包篩選會藉由讀取發送接收的IP地址以及互相溝通的窗口,一但發現不符合協定、表現怪異的封包,不論從內網出去還是進來,都可將其攔下
封包篩選會儲存一個類似ACL的權限清單
動作 | 發送IP | 接收IP | 發送窗口 | 接收窗口 | 協定 | TCP 旗子 |
---|---|---|---|---|---|---|
允許 | 內部 | 外部 | 任何 | 80 | HTTP | 任何 |
允許 | 外部 | 內部 | 80 | >1023 | HTTP | ACK |
不允許 | 任何 | 任何 | 任何 | 任何 | 任何 | 任何 |
以上的防火牆限制外部進來的網頁必須從對方的窗口80對話,也允許從內網發送到外部窗口80的資訊,其他動作一概會被攔下
從以上範例得知,防火牆可以阻擋下 不該被接觸的窗口,只要有封包想要與該窗口對話,就會立刻擋下
因此,Trudy若想攻擊此防火牆,他必須先知道哪一個窗口是打開的
Trudy可以進行窗口掃描(port scan),一但知道打開的窗口,Trudy就可以對那些窗口集中攻擊
回憶之前在TCP學的三向握手協定
Trudy若直接傳送ACK旗子給內網
由於沒有事先傳送SYN,違反TCP協定
不過篩選封包因為不知道你跟伺服器的對話階段,因此還是會放行該資訊
此時當資料進到伺服器時,會發現不對勁,因此回傳一個錯誤的旗子回去給Trudy,告訴他剛剛的訊息沒有傳送成功
這樣,Trudy就可以瘋狂地嘗試各個窗口傳送ACK資料,只要被阻擋,他就知道是被防火牆擋下,這些窗口不能用,而有接收到回傳訊息失敗的窗口,就是Trudy未來可以進行攻擊的地方
為了避免這種攻擊,防火牆必須能夠記憶兩者之間的對話內容,如此所有的ACK都能事先攔阻
防火牆將數據封包拆開至傳輸層進行讀取,而且記憶傳輸兩方的對話狀態
這可以避免上述的TCP ACK攻擊,不過相對地也比無狀態的封包篩選要來得慢
這類型防火牆可以當作是由你本人拆開封包來檢查
以上兩個防火牆就像是只有檢查是不是從奇怪的地方寄過來而已,
而應用代理防火牆可以當作社區管理員一樣,除了檢查是不是從詭異的地方寄來,更可以直接幫你把包裹拆開看,透過其特殊完整的工具,檢查是不是裝有危害的內容
其缺點是速度又比以上兩者更慢,而且可能會有資料因此洩漏,不過從安全性來講,要比以上兩者好太多了